package com.itheima.reggie.common;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

@Data
@ApiModel("统一结果类")
public class R<T> implements Serializable {// Result
    @ApiModelProperty("状态码")
    private Integer code; //编码：1成功，0和其它数字为失败
    @ApiModelProperty("消息")
    private String msg; //错误信息
           // Object data
    @ApiModelProperty("数据")
    private T data; //数据

    private Map map = new HashMap(); //动态数据  忽略

    /*
         若这次操作是成功的   响应对应的数据
           你把对应数据传递过来
           R.success(对应的数据)
           方法里面
             帮你 new对象
             帮你写状态码
             帮你把数据封装到 data属性上...
             然后 我再返回 封装好的 R对象
             面向对象知识的高级应用....
             (面向对象 static 创建对象  方法  泛型)
     */
    public static <T> R<T> success(T object) {
        R<T> r = new R<T>();
        r.data = object;
        r.code = 1;
        return r;
    }

    /**
     *
     若这次操作是失败的的   响应对应的提示
     你把对应提示传递过来
     R.error("提示信息")
     方法里面
     帮你 new对象
     帮你写状态码
     帮你把信息封装到 msg属性上...
     然后 我再返回 封装好的 R对象
     面向对象知识的高级应用....
     (面向对象 static 创建对象  方法  泛型)
     */
    public static <T> R<T> error(String msg) {
        R r = new R();
        r.msg = msg;
        r.code = 0;
        return r;
    }

    public R<T> add(String key, Object value) {
        this.map.put(key, value);
        return this;
    }

}
